AWS SAM CLI のトラブルシューティング時に詳細なデバッグログを出力する方法を教えてください
困っていた内容
SAM (Serverless Application Model)でアプリケーションを作成しています。
SAM CLI を利用してビルドやデプロイを実行していますが、エラーが発生します。
トラブルシューティングを行うためにサポートや SAM CLI の GitHub Issues で問い合わせを行う際に、デバッグログの提出を求められております。
どうやって出力すればよいでしょうか。
どう対応すればいいの?
SAM CLI のコマンドの引数に --debug
を指定して実行してください。
このフラグによって、デバッグメッセージが出力表示され、同時にタイムスタンプも表示されます。
サポートへの調査依頼や 公式の GitHub Issues でのバグ報告などの際に、詳細なログとして利用できる有効な手段となります。
デバッグログ出力の指定方法
以下のコマンドで、 --debug
の指定方法を確認できます。
$ sam --help Usage: sam [OPTIONS] COMMAND [ARGS]... AWS Serverless Application Model (SAM) CLI -- 省略 -- Options: --debug Turn on debug logging to print debug message generated by SAM CLI and display timestamps. -- 省略 -- Commands: init Init an AWS SAM application. validate Validate an AWS SAM template. build Build your Lambda function code -- 省略 --
シンプルな方法
SAM で作成したアプリケーションのビルドを実行する場合は、以下の様にします。
なお、ここで利用したコマンドは例の一つですので、実行するコマンドによって読み替えてください。
使用方法:
$ sam build --debug
出力結果は以下のようになります。
出力結果:
2022-04-14 16:48:05,353 | Telemetry endpoint configured to be https://aws-serverless-tools-telemetry.us-west-2.amazonaws.com/metrics 2022-04-14 16:48:05,353 | Using config file: samconfig.toml, config environment: default 2022-04-14 16:48:05,353 | Expand command line arguments to: -- 以下、省略 --
ログファイルとして出力する方法
以下の様に、標準出力と標準エラー出力を tee コマンドへパイプでつなぐことで、実行結果がファイルとして出力されます。
使用方法:
$ sam build --debug 2>&1 | tee result.txt
出力結果:
$ sam build --debug 2>&1 | tee result.txt 2022-04-14 16:52:01,346 | Telemetry endpoint configured to be https://aws-serverless-tools-telemetry.us-west-2.amazonaws.com/metrics 2022-04-14 16:52:01,347 | Using config file: samconfig.toml, config environment: default 2022-04-14 16:52:01,347 | Expand command line arguments to: -- 以下、省略 -- $ cat result.txt | head -n 3 2022-04-14 16:52:01,346 | Telemetry endpoint configured to be https://aws-serverless-tools-telemetry.us-west-2.amazonaws.com/metrics 2022-04-14 16:52:01,347 | Using config file: samconfig.toml, config environment: default 2022-04-14 16:52:01,347 | Expand command line arguments to: